<?
$uri=$_SERVER['REQUEST_URI'];
$newuri=str_replace('electricidad','informes-electricidad',$uri);
?>

<h2>Esta pagina ya no existe.</h2>
<a href="<?=$newuri?>">Ir a la nueva ubicacion</a>



<?php
exit();

class ElectricidadController extends Sgit_Controller_Action
{

    protected $_checkZona = true;
    protected $_checkAcceso = true;

    protected $_main_model = 'ImputacionProyectosElectricidad';


    /**
     * ElectricidadController::_comun()
     * 
     * elementos comunes para imputacion,facturacio,exceso,margen
     * 
     */
     
    function _comun($values_extra='',$nowhere='')
    {

        if (!$this->getRequest()->isPost())
        {
            $imp = new Application_Model_ImputacionElectricidad();
            $last = $imp->getLastImputacion($this->_idZona);
            $this->setParam('mes', $last['mes']);
            $this->setParam('anio', $last['anio']);
        } else
        {
            $where['mes = ?'] = $this->_getParam('mes');
            $where['anio = ?'] = $this->_getParam('anio');
            $where['id_zona = ?'] = $this->_idZona;
            unset($where);
        }


        $this->is_datacenter = Sgit_Validate_isDatacenter::isValid();

        $filtros = new Sgit_Form_Filtros();

        $f_mes = new Sgit_Form_Element_Select_Mes('mes');
        $f_mes->setLabel('Mes');
        $filtros->addFormSelect($f_mes);

        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setLabel('Año');
        $filtros->addFormSelect($f_anio);

        $proyecto = new Sgit_Form_Element_Select_Proyectos('id_proyecto');
        $proyecto->setLabel('Proyecto');
        $filtros->addFormSelect($proyecto);

        $pep = new Zend_Form_Element_Text('orden');
        $pep->setLabel('PEP');
        $filtros->addFormSelect($pep);

        $usuario = new Sgit_Form_Element_Select_Usuarios('id_dir');
        $usuario->setLabel('JP');
        $filtros->addFormSelect($usuario);


        $filtros->addExcel();
        $filtros->addPdf();
        $filtros->myRender();


        $values = $this->_getFiltrosValues($filtros);
        $values['id_zona'] = $this->_idZona;
        
        if ($values_extra) $values=array_merge((array)$values_extra,(array)$values);


        return $this->_model->default->getListadoImputacion($values);

    }


    public function imputacionAction()
    {

        $rows = $this->_comun();

        foreach ($rows as $k => $v)
        {
            if (!$this->is_datacenter && !$v['publicado'])
            {
                continue;
            }
            $filas[] = $v;
        }

        $this->view->rows = $filas;
        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('consumo_equipos_propios', 'consumo_total', 'imputacion'));

        $this->_pdfSubTitle = $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows);
        
        $xml = $this->_getXml($this->_actionName);
        $this->view->columnas = $xml['columnas'];

    }


    public function facturacionAction()
    {
        $rows = $this->_comun();

        foreach ($rows as $k => $v)
        {
            if (!$this->is_datacenter && !$v['publicado'])
            {
                continue;
            }
            if (!$v['facturado'])
                continue;

            $filas[] = $v;
        }

        $this->view->rows = $filas;
        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('consumo_equipos_propios', 'consumo_facturable', 'importe', 'import_gestion', 'fact_consumo'));
        $this->view->suma['proyecto'] = 'Total';

        $this->_pdfSubTitle = $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows, $this->_actionName);
        
        $xml = $this->_getXml($this->_actionName);
        $this->view->columnas = $xml['columnas'];
    }


    public function margenAction()
    {
        $rows = $this->_comun();

        foreach ($rows as $k => $v)
        {
            if (!$this->is_datacenter && !$v['publicado'])
            {
                continue;
            }
            if (!$v['facturado'])
                continue;

            $filas[] = $v;
        }

        $this->view->rows = $filas;
        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('consumo_equipos_propios', 'consumo_total', 'imputacion', 'imputacion_exceso', 'imputacion_total', 'consumo_facturable', 'fact_consumo', 'fact_exceso', 'facturacion'));
        $this->view->suma['proyecto'] = 'Total';


        $this->_pdfSubTitle = $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows);

        $xml = $this->_getXml($this->_actionName);

        $this->view->columnas = $xml['columnas'];


    }


    public function excesoAction()
    {
        
        $values_extra['mod_disp']=1;
        $rows = $this->_comun($values_extra);

        foreach ($rows as $k => $v)
        {
            if (!$this->is_datacenter && !$v['publicado'])
            {
                continue;
            }
            if (!$v['facturado'])
                continue;

            $filas[] = $v;
        }

        $this->view->rows = $filas;
        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('potencia_actual', 'superficie', 'imputacion_exceso'));
        $this->view->suma['proyecto'] = 'Total';


        $this->_pdfSubTitle = $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows);
        $xml = $this->_getXml($this->_actionName);
        $this->view->columnas = $xml['columnas'];
    }
    
    
    
    
    public function disponibilidadAction()
    {
        $values_extra['mod_disp']=2;
        $values_extra['id_tip_disp']=1;
        $values_extra['tip_fact']=7;



        $rows = $this->_comun($values_extra);


        foreach ($rows as $k => $v)
        {
            
            if (!$this->is_datacenter && !$v['publicado'])
            {
                continue;
            }
            if (!$v['facturado'])
                continue;


            $v['disponibilidad_contratada'] =$v['disponibilidad_precio'];
            $v['disponibilidad_consumida'] =$v['disponibilidad_precio_exceso']; 
            $filas[] = $v;
        }


        $this->view->rows = $filas;
        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('potencia_actual', 'superficie', 'disponibilidad_contratada','disponibilidad_consumida'));
        $this->view->suma['proyecto'] = 'Total';


        $this->_pdfSubTitle = $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows);
        $xml = $this->_getXml($this->_actionName);
        $this->view->columnas = $xml['columnas'];
        

    }  


    public function excesoPublicoAction()
    {
        $this->_forward('exceso');
    }
    public function disponibilidadPublicoAction()
    {
        $this->_forward('disponibilidad');
    }
    
    public function imputacionPublicoAction()
    {
        $this->_forward('imputacion');
    }
    public function facturacionPublicoAction()
    {
        $this->_forward('facturacion');
    }

    public function margenPublicoAction()
    {
        $this->_forward('margen');
    }


    protected function detalleAction()
    {

        $this->_loadModel('Contadores');
        $this->_loadModel('Proyectos');

        $values['id_zona'] = $this->_idZona;
        $values['mes'] = $this->_getParam('mes');
        $values['anio'] = $this->_getParam('anio');
        $values['id_proyecto'] = $this->_getParam('id_proyecto');


        $this->view->proyecto = $this->_model->Proyectos->getOne('nombre', $values['id_proyecto']);

        $rows = $this->_model->default->getListadoImputacion($values);
        $imputacion = $rows[0];

        $contadores = $this->_model->Contadores->getContadoresDetalleFacturacion($values);

        foreach ($contadores as & $v)
        {
            $parte = $v['consumo'] / $imputacion['consumo_equipos_propios'];
            $v['porcentaje_gestion'] = ($imputacion['tip_gestion'] == 2) ? $imputacion['por_gestion'] : 0;


            $v['fecha'] = $imputacion['fecha'];
            $v['con_numero'] = $v['con_numero'];
            $v['id_contador'] = $v['id'];
            $v['con_name'] = $v['con_name'];
            $v['id_proyecto'] = $imputacion['id_proyecto'];
            $v['consumo_equipos_propios'] = $v['consumo'];
            $v['coeficiente_facturacion'] = $imputacion['coeficiente_facturacion'];
            $v['consumo_facturable'] = $v['consumo_equipos_propios'] * $v['coeficiente_facturacion'];
            $v['precio_aplicado'] = $imputacion['precio_aplicado'];
            $v['importe'] = $imputacion['precio_aplicado'] * $imputacion['coeficiente_facturacion'] * $v['consumo'];
            $v['porcentaje_gestion'] = $v['porcentaje_gestion'];
            $v['import_gestion'] = $imputacion['import_gestion'] / count($contadores);
            $v['fact_consumo'] = $imputacion['fact_consumo'] * $parte;
            $v['texto_facturacion'] = $imputacion['texto_facturacion'];

        }


        $this->view->rows = $contadores;
        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('consumo_equipos_propios', 'consumo_facturable', 'importe', 'import_gestion', 'fact_consumo'));
        $this->view->suma['proyecto'] = 'Total';

        $this->_pdfSubTitle = $this->view->proyecto . " " . $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows, $this->_actionName);
    }


    public function resumenAction()
    {
        if (!$this->_getParam('anio'))
        {
            $this->setParam('anio', date('Y'));
        }

        $filtros = new Sgit_Form_Filtros();

        $f_mes = new Sgit_Form_Element_Select_Mes('mes');
        $f_mes->setLabel('Mes');
        $filtros->addFormSelect($f_mes);

        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setLabel('Año');
        $filtros->addFormSelect($f_anio);

        $filtros->addExcel();
        $filtros->addPdf();
        $filtros->myRender();

        $values = $this->_getFiltrosValues($filtros);
        $values['id_zona'] = $this->_idZona;



        $imp = new Application_Model_ImputacionElectricidad();
        $this->view->rows = $imp->getImputacionResumen($values);

        $this->view->suma = Sgit_Util_Suma::run($this->view->rows, array('consumo_total', 'consumo_it', 'consumo_servicios', 'potencia_total', 'potencia_it', 'potencia_servicios', 'facturado_compania', 'imputacion', 'facturacion'));

        $this->view->suma['ratio_reventa'] = 100 * (($this->view->suma['facturacion'] / $this->view->suma['facturado_compania']) - 1);
        $this->view->suma['pue'] = $this->view->suma['potencia_total'] / $this->view->suma['potencia_it'];


        $this->view->suma['proyecto'] = 'Total';


        $this->_pdfSubTitle = $this->zona . " " . Sgit_Util_Meses::run($this->_getParam('mes')) . " " . $this->_getParam('anio');
        $this->_export($this->view->rows);

        $xml = $this->_getXml($this->_actionName);

        $this->view->columnas = $xml['columnas'];


    }









    public function testAction()
    {

        $anio = $this->_getParam('anio');
        $mes = $this->_getParam('mes');
        $diff = $this->_getParam('diff', 12);

        if (!$anio)
        {
            $this->_loadModel('ImputacionElectricidad');
            $last = $this->_model->ImputacionElectricidad->getLastImputacion($this->_idZona);

            $mes = $last['mes'];
            $anio = $last['anio'];

        }

        $filtros = new Sgit_Form_Filtros();

        $f_anio = new Sgit_Form_Element_Select_Year('anio');
        $f_anio->setLabel('Año');
        $f_anio->setValue('2012');
        $filtros->addFormSelect($f_anio);

        $f_mes = new Sgit_Form_Element_Select_Mes('mes');
        $f_mes->setLabel('Mes');
        $f_mes->setValue($mes);
        $filtros->addFormSelect($f_mes);

        $f_diff = new Zend_Form_Element_Text('diff');
        $f_diff->setLabel('Diff %');
        $f_diff->setValue($diff);
        $filtros->addFormSelect($f_diff);


        $values = $this->_getFiltrosValues($filtros);
        $filtros->myRender();

        $this->view->diff = $diff;


        $fecha = new Zend_Date();
        $fecha->setDay(1)->setMonth($mes)->setYear($anio)->subMonth(1);


        $filas1 = $this->_model->default->getImputacionFecha($anio, $mes, $this->_idZona);
        $filas2 = $this->_model->default->getImputacionFecha($fecha->get(Zend_Date::YEAR), $fecha->get(Zend_Date::MONTH_SHORT), $this->_idZona);
 
        $f1=new Zend_Date(mktime(1, 1, 1, $mes-1, 1, $anio));
        $f2=new Zend_Date(mktime(1, 1, 1, $mes-2, 1, $anio));

        foreach ($filas1 as $k => $v)
        {
            $rows[$k]['nombre'] = $v['nombre'];

            $v['potencia']=1000*Sgit_Util_Potencia::run($v['consumo_equipos_propios'], $f1);
            $filas2[$k]['potencia']=1000*Sgit_Util_Potencia::run($filas2[$k]['consumo_equipos_propios'], $f2);
            
            $rows[$k]['potencia'] = $this->fila($v, $filas2[$k], 'potencia', $diff);
            
            $rows[$k]['consumo_equipos_propios'] = $this->fila($v, $filas2[$k], 'consumo_equipos_propios', $diff);
            
            
            
            
            $rows[$k]['facturacion'] = $this->fila($v, $filas2[$k], 'facturacion', $diff);
            $rows[$k]['coeficiente_facturacion'] = $this->fila($v, $filas2[$k], 'coeficiente_facturacion', 0, 1);
            $rows[$k]['coeficiente_repercusion_aplicado'] = $this->fila($v, $filas2[$k], 'coeficiente_repercusion_aplicado', 0, 2);
            
 
            $rows[$k]['consumo_total'] = $this->fila($v, $filas2[$k], 'consumo_total', $diff);
            $rows[$k]['precio_aplicado'] = $this->fila($v, $filas2[$k], 'precio_aplicado', $diff, 2);
            $rows[$k]['imputacion'] = $this->fila($v, $filas2[$k], 'imputacion', $diff);
            $rows[$k]['importe'] = $this->fila($v, $filas2[$k], 'importe', $diff);
            $rows[$k]['disponibilidad'] = $this->fila($v, $filas2[$k], 'disponibilidad', $diff, 2);
            $rows[$k]['por_gestion'] = $this->fila($v, $filas2[$k], 'por_gestion', $diff);
            $rows[$k]['import_gestion'] = $this->fila($v, $filas2[$k], 'import_gestion', $diff);
            $rows[$k]['superficie'] = $this->fila($v, $filas2[$k], 'superficie', $diff, 2);
            $rows[$k]['precio_exceso'] = $this->fila($v, $filas2[$k], 'precio_exceso', $diff, 2);
            $rows[$k]['ratiowm2'] = $this->fila($v, $filas2[$k], 'ratiowm2', $diff);
            $rows[$k]['imputacion_exceso'] = $this->fila($v, $filas2[$k], 'imputacion_exceso', $diff);
            $rows[$k]['mod_disp'] = $this->fila($v, $filas2[$k], 'mod_disp', 0);
        }
        $this->view->rows = $rows;
    }


    function fila($v, $filas2, $key, $diff = 12, $dec = 0)
    {
        $row['status'] = $this->testDiff($v[$key], $filas2[$key], $diff);
        $row['text'] = $this->view->numES($v[$key], $dec) . ' <br> ' . $this->view->numES($filas2[$key], $dec);
        return $row;

    }


    /**
     * ImputacionTestController::testDiff()
     *
     * @param mixed $v1
     * @param mixed $v2
     * @return
     */
    function testDiff($v1, $v2, $diff = 12)
    {

        if ($v2 == 0 && $v1 > 0)
        {
            return false;
        }

        $value = $v1 / $v2;
        if (is_bool($value))
        {
            return true;
        } else
        {
            if ($value < 1)
            {
                $porcentaje = 100 * (1 - $value);
            } else
            {
                $porcentaje = 100 * ($value - 1);
            }

            if ($porcentaje <= $diff)
            {
                return true;
            } else
            {
                return false;
            }
        }


    }


}
